Stick the table QRs and this board fills itself: tables appear when diners scan, takeaways when they order ahead. Nothing to accept, nothing to configure.
Print table QRs ›Ready times and running-late notes send themselves. Only a guest's own message is unread.
Dishes you add go to this person's part of the bill.
Kibaz never takes more than {{ capPctLabel }} off a bill — {{ capAmtLabel }} here. Anything not used stays in the diner's wallet.
The whole order goes with them — sent rounds included.
Every clock-in and close is logged here. Kibaz learns your real trading hours from this pattern — auto opening-hours coming.
Off your pages until filed.
Holds 7 — a new keep bumps the oldest. Bin: 30 days to recover.
Deleting a section removes its dishes from this menu. Diners stop seeing them instantly.
Each table's code is unique and carries its name — reprint after renaming. New tables appear on the floor board instantly; a seated table can't be removed.
Network printers connect over your restaurant Wi‑Fi or LAN. Find the printer's IP on its self‑test slip, type it in, then send a test ticket to confirm it's wired to the right station.
Choose what you accept at checkout. Switch off over‑the‑counter payment to run a digital‑only till — only the methods left on show on the payment screen.
These details print at the top of every receipt. Your BRN and, if registered, your VAT number are required on a fiscal receipt in Mauritius.
{{ meRuleHelp }}
Name each one, and an optional add-on price. Leave price blank for free.
How an incoming online order (takeaway / delivery) is handled when the terminal is busy or unattended. Dine-in rounds are excluded — those are always staff-fired.
autoAccept is on, the kitchen ticket prints immediately and the order shows “Auto-accepted · ticket printed → kitchen · unread”. Cooking never waits on a human.In this prototype the thresholds are compressed to ~1 min (escalate) / ~2 min (auto-confirm) so they're observable; ship with ~60s / ~3min and make both configurable per venue.
Tapping Confirm & set time opens an ETA picker (~10/15/20/30 min). The chosen ETA is stored in acceptedEta[id] and pushed to the guest. Auto-confirm uses the default ETA instead.
There's no kitchen display pushing "ready", so the order can't mark itself. After confirm it sits as Cooking with a countdown to the promised time; when that time passes it flips to a red Due now — ready? self-reminder. Either way the action is Mark ready (type:"ready" → sets readyMarked[id], pings the guest "come collect"), then the card offers Hand over to close. This replaces the old "Chase kitchen" — chasing an anonymous kitchen made no sense on a single terminal.
Snooze only hides a card temporarily (snoozed[key] wake-tick); it auto-wakes, and tapping a snoozed card wakes it immediately so you can still Mark ready. Nothing is ever stuck off-board.
From Contact guest → An item's out of stock, staff pick which exact line from that order; the guest gets a WhatsApp naming that item and asking to swap or refund it. Never a generic “something's out.”
autoAccept is a per-venue toggle (POS → Online orders). Off = every order needs a manual Accept.autoAccept:bool · autoConfirmed:{id:true} · acceptedEta:{id:min} · pendingEta:min · escalate@~60s · autoConfirm@~3min (default 15min)